#include "HashTable.hpp"

// void test()
// {
//     int a[] = {1,4,24,34,7,44,17,37};
//     hashtable<int,int> h1;

//     for(auto e : a)
//     {
//         h1.insert(make_pair(e,e));
//     }

//     for(auto e : a)
//     {
//         auto ret = h1.find(e);
//         cout << ret->_data.first << ":" << ret->_state << endl;
//     }

//     h1.erase(1);
//     h1.erase(44);

//     cout << endl;

//     for(auto e : a)
//     {
//         auto ret = h1.find(e);
//         if(ret)
//             cout << ret->_data.first << ":" << ret->_state << endl;
//     }
//     cout << endl;
//     // h1.insert(make_pair(1,1));
//     // h1.insert(make_pair(4,4));
//     // h1.insert(make_pair(24,24));
//     // h1.insert(make_pair(34,34));
//     // h1.insert(make_pair(7,7));
//     // h1.insert(make_pair(44,44));
//     // h1.insert(make_pair(17,17));
//     // h1.insert(make_pair(37,37));
// }

// void test()
// {
//     hashtable<string,string,HashFuncString> h1;
//     h1.insert(make_pair("sort","排序"));
//     h1.insert(make_pair("string","字符串"));
//     h1.insert(make_pair("apple","苹果"));
//     h1.insert(make_pair("Faiz","555"));
//     string str[] = {"sort","string","apple","Faiz"};
//     // for(int i = 0; i < 4; i++)
//     // {
//     //     auto ret = h1.find(str[i]);
//     //     if(ret)
//     //         cout << ret->_data.first << endl;
//     // }
//     h1.print();
// }

void test()
{
    hashtable<int,int> h1;
    //cout << "hello world" << endl;
    int a[] = {1,4,24,34,7,44,17,37,67,11,21,43,53,25,9999999,1111111,22,46,23};
    for(auto e:a)
    {
        h1.insert(make_pair(e,e));
        // h1.print();
        // cout << "--------------------------------------" << endl;
    }

    hashtable<int,int> h2(h1);

    //h2.print();
    hashtable<int,int> h3;
    h3.insert(make_pair(3,3));
    cout << "--------------------------------------" << endl;
    h3 = h1;
    h3.print();
    // for(auto e:a)
    // {
    //     h1.erase(e);
    //     h1.print();
    //     cout << "--------------------------------------" << endl;
    // }
    //h1.print();
}

// class A
// {
// public:
//     A()
//     {
//         cout << "A()" << endl;
//     }
//     ~A()
//     {
//         cout << "~A()" << endl;
//     }
// private:
//     int _a;
// };

// class B
// {
// public:
//     B()
//     {
//         cout << "B()" << endl;
//     }
//     ~B()
//     {
//         cout << "~B()" << endl;
//     }
// private:
//     A a;
// };


int main()
{
 //   B b;
    test();
    return 0;
}



